<?php

namespace App\Services;


use App\Libs\Vm\CvmLib;
use App\Libs\Vm\EcsLib;

class VmService
{
    public $type;

    /**
     * Note - ECS实例属性信息
     * DateTime 2025/2/10 16:10
     * User Admin
     * @param $regionId
     * @param $instanceId
     * @return array
     */
    public function info($regionId, $instanceId)
    {
        if ($this->type == 1){
            return EcsLib::info($regionId,$instanceId);
        }
        if ($this->type == 2){
            return CvmLib::info($regionId,$instanceId);
        }
        // try {
        //     $client = self::createClient($regionId);
        //     $describeInstanceAttributeRequest = new DescribeInstanceAttributeRequest([
        //         "instanceId" => $instanceId
        //     ]);
        //     $runtime = new RuntimeOptions([]);
        //     // 复制代码运行请自行打印 API 的返回值
        //     $response = $client->describeInstanceAttributeWithOptions($describeInstanceAttributeRequest, $runtime);
        //     return $response->body->toMap();
        // } catch (\Throwable $error) {
        //     if (!($error instanceof TeaError)) {
        //         $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
        //     }
        //     logInfo('info',['错误' => $error->message,'诊断地址' => $error->data["Recommend"] ?? 'url']);
        //     return [];
        // }
    }

    /**
     * Note - ECS实例列表
     * DateTime 2025/2/6 10:37
     * User Admin
     */
    public function list($regionId, $resourceGroupId){
        if ($this->type == 1){
            return EcsLib::list($regionId,$resourceGroupId);
        }
        if ($this->type == 2){
            return CvmLib::list($regionId,$resourceGroupId);
        }
        // $client = self::createClient($regionId);
        // $describeInstancesRequest = new DescribeInstancesRequest([
        //     "regionId" => $regionId,
        //     "resourceGroupId" => $resourceGroupId,
        //     'MaxResults' => 100
        // ]);
        // $runtime = new RuntimeOptions([]);
        // try {
        //     $response = $client->describeInstancesWithOptions($describeInstancesRequest, $runtime);
        //     $data = $response->body->toMap();
        //     return $data["Instances"]["Instance"] ?? [];
        // } catch (Exception $error) {
        //     if (!($error instanceof TeaError)) {
        //         $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
        //     }
        //     // var_dump($error->message);
        //     // // 诊断地址
        //     // var_dump($error->data["Recommend"]);
        //     logInfo('list',['错误' => $error->message,'诊断地址' => $error->data["Recommend"] ?? 'url']);
        //     return [];
        // }
    }

    /**
     * Note - ECS实例 启动
     * DateTime 2025/2/6 11:43
     * User Admin
     * @param $regionId
     * @param $instanceId
     * @return bool
     */
    public function start($regionId,$instanceId){
        if ($this->type == 1){
            return EcsLib::start($regionId,$instanceId);
        }
        if ($this->type == 2){
            return CvmLib::start($regionId,$instanceId);
        }
        // $client = self::createClient($regionId);
        // $startInstanceRequest = new StartInstanceRequest([
        //     'instanceId' => $instanceId
        // ]);
        // $runtime = new RuntimeOptions([]);
        // try {
        //     // 复制代码运行请自行打印 API 的返回值
        //     $response = $client->startInstanceWithOptions($startInstanceRequest, $runtime);
        //     $data = $response->body->toMap();
        //     if ($data["RequestId"]){
        //         return true;
        //     }
        // } catch (Exception $error) {
        //     if (!($error instanceof TeaError)) {
        //         $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
        //     }
        //     // var_dump($error->message);
        //     logInfo('start',['错误' => $error->message,'诊断地址' => $error->data["Recommend"] ?? 'url']);
        // }
        // return false;
    }

    /**
     * Note - ECS实例 重启
     * DateTime 2025/2/6 11:43
     * User Admin
     * @param $regionId
     * @param $instanceId
     * @return bool
     */
    public function restart($regionId,$instanceId){
        if ($this->type == 1){
            return EcsLib::restart($regionId,$instanceId);
        }
        if ($this->type == 2){
            return CvmLib::restart($regionId,$instanceId);
        }
        // $client = self::createClient($regionId);
        // $rebootInstanceRequest = new RebootInstanceRequest([
        //     'instanceId' => $instanceId,
        //     'ForceStop' => true
        // ]);
        // $runtime = new RuntimeOptions([]);
        // try {
        //     // 复制代码运行请自行打印 API 的返回值
        //     $response = $client->rebootInstanceWithOptions($rebootInstanceRequest, $runtime);
        //     $data = $response->body->toMap();
        //     if ($data["RequestId"]){
        //         return true;
        //     }
        // } catch (Exception $error) {
        //     if (!($error instanceof TeaError)) {
        //         $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
        //     }
        //     // // 错误 message
        //     // var_dump($error->message);
        //     // // 诊断地址
        //     // var_dump($error->data["Recommend"]);
        //     logInfo('restart',['错误' => $error->message,'诊断地址' => $error->data["Recommend"] ?? 'url']);
        // }
        // return false;
    }


    /**
     * Note - ECS实例 停机
     * DateTime 2025/2/6 11:43
     * User Admin
     * @param $regionId
     * @param $instanceId
     * @return bool
     */
    public function shoutDown($regionId,$instanceId){
        if ($this->type == 1){
            return EcsLib::shoutDown($regionId,$instanceId);
        }
        if ($this->type == 2){
            return CvmLib::shoutDown($regionId,$instanceId);
        }
        // $client = self::createClient($regionId);
        // $stopInstanceRequest = new StopInstanceRequest([
        //     'stoppedMode' => 'StopCharging',// 停机节省模式；KeepCharging-保持计费状态；StopCharging-停机节省模式
        //     'instanceId' => $instanceId
        // ]);
        // $runtime = new RuntimeOptions([]);
        // try {
        //     // 复制代码运行请自行打印 API 的返回值
        //     $response = $client->stopInstanceWithOptions($stopInstanceRequest, $runtime);
        //     $data = $response->body->toMap();
        //     if ($data["RequestId"]){
        //         return true;
        //     }
        // } catch (Exception $error) {
        //     if (!($error instanceof TeaError)) {
        //         $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
        //     }
        //     // // 错误 message
        //     // var_dump($error->message);
        //     // // 诊断地址
        //     // var_dump($error->data["Recommend"]);
        //     logInfo('shoutDown',['错误' => $error->message,'诊断地址' => $error->data["Recommend"] ?? 'url']);
        // }
        // return false;
    }

    public function regionList(){
        if ($this->type == 1){
            return EcsLib::regionList();
        }
        if ($this->type == 2){
            return CvmLib::regionList();
        }

    }


}
